<?php
/**
 * Created by PhpStorm.
 * User: 热心观众
 * Date: 2018/9/27
 * Time: 16:32
 */

namespace app\admin\controller;

use think\Db;
use think\toJson;

class Role extends AdminController
{
//    角色管理
    public function RoleList()
    {
        // 查询角色表
        $list = Db::table('zz_role')->order('zz_role_id','asc')->select();
        
        // 查询权限列表
        $list_node = Db::table('zz_node')->select();

        // 查询 角色_权限列表
        $list_role_node = Db::table('zz_role_node')->select();

        for ($i=0; $i < sizeof($list); $i++) { 
            for ($j=0; $j < sizeof($list_role_node); $j++) { 
                if (!empty($list_role_node[$j]['zz_role_id'])) {
                    if ($list[$i]['zz_role_id'] == $list_role_node[$j]['zz_role_id']) {
                        for ($k=0; $k < sizeof($list_node); $k++) { 
                            if ($list_role_node[$j]['zz_node_id'] == $list_node[$k]['zz_node_id']) {
                                $list[$i]['zz_node_name'][] = $list_node[$k]['zz_node_name'];
                            }
                        }
                    }
                }
                
            }
        }
        
        // 统计数据
        $num = sizeof($list);
        return view('adminrole/role-list',[
            'list' => $list,
            'num' => $num
        ]);
    }

//    新增角色
    public function RoleAdd()
    {
        // 查询所有权限
        $list = Db::table('zz_node')->select();
        
        // 图标管理
        $list_icon = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "Icon") {
                $list_icon[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                $list_icon[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
            }
        }

        return view('adminrole/role-add',[
            'list_icon' => $list_icon
        ]);
    }

    // 执行新增角色
    public function RoleDoAdd()
    {
        $name = input('name');
        $data_role = [];
        $data_role['zz_role_name'] = $name;
        $newId = Db::table('zz_role')->insertGetId($data_role);

        $zz_node_id = Db::table('zz_node')->where('zz_node_controlname',"Icon")->select();

        $data = [];
        $data['zz_role_id'] = $newId;
        for ($i=0; $i < sizeof($zz_node_id); $i++) { 
            $data['zz_node_id'] = $zz_node_id[$i]['zz_node_id'];
            Db::table('zz_role_node')->insert($data);
        }

        $res = [];
        $res['status'] = 1;
        return json($res);
    }

//    编辑角色
    public function RoleEdit($id)
    {

        // 根据id 查询 角色信息
        $role_name = Db::table('zz_role')->field('zz_role_name')->where('zz_role_id',$id)->find();

        // 根据id 查询 所拥有权限
        $node_id = Db::table('zz_role_node')->where('zz_role_id',$id)->select();

        // 查询所有权限
        $list = Db::table('zz_node')->select();

        // 会员管理
        $list_user = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "User") {
                for ($j=0; $j < sizeof($node_id); $j++) { 
                    $list_user[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                    $list_user[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
                    if ($list_user[$i]['zz_node_id'] == $node_id[$j]['zz_node_id']) {
                        $list_user[$i]['status'] = 1;
                    }
                }
            }
        }

        // 图标管理
        $list_icon = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "Icon") {
                for ($j=0; $j < sizeof($node_id); $j++) { 
                    $list_icon[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                    $list_icon[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
                    if ($list_icon[$i]['zz_node_id'] == $node_id[$j]['zz_node_id']) {
                        $list_icon[$i]['status'] = 1;
                    }
                }
            }
        }

        // 问答管理
        $list_problem = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "Problem") {
                for ($j=0; $j < sizeof($node_id); $j++) { 
                    $list_problem[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                    $list_problem[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
                    if ($list_problem[$i]['zz_node_id'] == $node_id[$j]['zz_node_id']) {
                        $list_problem[$i]['status'] = 1;
                    }
                }
            }
        }

        // 分类管理
        $list_cate = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "Cate") {
                for ($j=0; $j < sizeof($node_id); $j++) { 
                    $list_cate[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                    $list_cate[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
                    if ($list_cate[$i]['zz_node_id'] == $node_id[$j]['zz_node_id']) {
                        $list_cate[$i]['status'] = 1;
                    }
                }
            }
        }

        // 管理员管理
        $list_auser = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "Auser") {
                for ($j=0; $j < sizeof($node_id); $j++) {
                    $list_auser[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                    $list_auser[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
                    if ($list_auser[$i]['zz_node_id'] == $node_id[$j]['zz_node_id']) {
                        $list_auser[$i]['status'] = 1;
                    }
                }
            }
        }

        // 角色管理
        $list_role = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "Role") {
                for ($j=0; $j < sizeof($node_id); $j++) {
                    $list_role[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                    $list_role[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
                    if ($list_role[$i]['zz_node_id'] == $node_id[$j]['zz_node_id']) {
                        $list_role[$i]['status'] = 1;
                    }
                }
            }
        }

        // 首页登录
        $list_permission = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "Index") {
                for ($j=0; $j < sizeof($node_id); $j++) {
                    $list_index[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                    $list_index[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
                    if ($list_index[$i]['zz_node_id'] == $node_id[$j]['zz_node_id']) {
                        $list_index[$i]['status'] = 1;
                    }
                }
            }
        }

        // 权限管理
        $list_permission = [];
        for ($i=0; $i < sizeof($list); $i++) { 
            if ($list[$i]['zz_node_controlname'] == "Permission") {
                for ($j=0; $j < sizeof($node_id); $j++) {
                    $list_permission[$i]['zz_node_name'] = $list[$i]['zz_node_name'];
                    $list_permission[$i]['zz_node_id'] = $list[$i]['zz_node_id'];
                    if ($list_permission[$i]['zz_node_id'] == $node_id[$j]['zz_node_id']) {
                        $list_permission[$i]['status'] = 1;
                    }
                }
            }
        }
        // dump($list_permission);die;




        return view('adminrole/role-edit',[
            'role_name' => $role_name,
            'list_user' => $list_user,
            'list_icon' => $list_icon,
            'list_problem' => $list_problem,
            'list_cate' => $list_cate,
            'list_auser' => $list_auser,
            'list_role' => $list_role,
            'list_index' => $list_index,
            'list_permission' => $list_permission,
            'id' => $id
        ]);
    }

    // 执行编辑角色
    public function RoleDoEdit()
    {
        $roleId = input('roleId');
        $ids = input('id/a');
        $idAll = array_keys($ids);

        Db::table('zz_role_node')->where('zz_role_id',$roleId)->delete();

        $data = [];
        $data['zz_role_id'] = $roleId;
        for ($i=0; $i < sizeof($idAll); $i++) { 
            $data['zz_node_id'] = $idAll[$i];
            Db::table('zz_role_node')->insert($data);
        }


        $res = [];
        $res['status'] = 1;
        return json($res);
    }

    // 停用
    public function RoleStatusDown()
    {
        $id = input('id');

        $data = [];
        $data['zz_role_status'] = 0;

        Db::table('zz_role')->where('zz_role_id',$id)->update($data);

        $res = [];
        $res['status'] = 1;
        return json($res);
    }

    // 启用
    public function RoleStatusUp()
    {
        $id = input('id');

        $data = [];
        $data['zz_role_status'] = 1;

        Db::table('zz_role')->where('zz_role_id',$id)->update($data);

        $res = [];
        $res['status'] = 1;
        return json($res);
    }

    // 删除
    public function RoleDel()
    {
        $id = input('id');

        Db::table('zz_role')->where('zz_role_id',$id)->delete();
        Db::table('zz_role_node')->where('zz_role_id',$id)->delete();

        $res = [];
        $res['status'] = 1;
        return json($res);
    }

}